package com.jrx.anytxn.reporting.dto;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 账户信息响应
 * @author xqy
 * @version 1.0
 * @date 2020/4/15
 */
public class MrLoanAccountInfoRes implements Serializable {
    /**
     * 主键
     * 表字段:id
     */
    private Long id;

    /**
     * 租户ID
     * 表字段:tenant_id
     */
    private String tenantId;

    /**
     * 贷款订单id
     * 表字段:loan_id
     */
    private String loanId;

    /**
     * 客户id
     * 表字段:customer_id
     */
    private String customerId;

    /**
     * 机构号
     * 表字段:organization_id
     */
    private String organizationId;

    /**
     * 渠道id
     * 表字段:channel
     */
    private String channel;

    /**
     * 合同号 贷款合同的合同号
     * 表字段:contract_id
     */
    private String contractId;

    /**
     * 外部合同号
     * 表字段:contract_number
     */
    private String contractNumber;

    /**
     * 业务种类 1-贷款；2-信用卡
     * 表字段:business_type
     */
    private String businessType;

    /**
     * 贷款类型 订单表loan_type
     * 表字段:loan_type
     */
    private String loanType;

    /**
     * 发生地点
     * 表字段:occur_place
     */
    private String occurPlace;

    /**
     * 还款频率
     * 表字段:loan_duration_unit
     */
    private String loanDurationUnit;

    /**
     * 共享授信额度
     * 表字段:share_contract_amount
     */
    private BigDecimal shareContractAmount;

    /**
     * 总期数
     * 表字段:total_tenor
     */
    private Integer totalTenor;

    /**
     * 已还期数
     * 表字段:payed_tenor
     */
    private Integer payedTenor;

    /**
     * 申请日期
     * 表字段:apply_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date applyDate;

    /**
     * 发放日期
     * 表字段:release_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date releaseDate;

    /**
     * 最早逾期日期
     * 表字段:overdue_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date overdueDate;

    /**
     * 到期日期
     * 表字段:last_payment_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date lastPaymentDate;

    /**
     * 结清日期
     * 表字段:payoff_date
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date payoffDate;

    /**
     * 担保方式
     * 表字段:assure_type
     */
    private String assureType;

    /**
     * 五级分类
     * 表字段:loan_classify
     */
    private String loanClassify;

    /**
     * 合同性质
     * 表字段:nature
     */
    private String nature;

    /**
     * 帐户状态
     * 表字段:account_status
     */
    private String accountStatus;

    /**
     * 逾期天数
     * 表字段:ovd_days
     */
    private Integer ovdDays;

    /**
     * 贷款申请审批状态
     * 表字段:appstat
     */
    private String appstat;

    /**
     * 还款方式
     * 表字段:amort_method
     */
    private String amortMethod;

    /**
     * 还款卡号
     * 表字段:rtn_cardno
     */
    private String rtnCardno;

    /**
     * 放款途径
     * 表字段:pay_mode
     */
    private String payMode;

    /**
     * 放款卡号
     * 表字段:pay_cardno
     */
    private String payCardno;

    /**
     * 还款日确定方式
     * 表字段:rtn_date_type
     */
    private String rtnDateType;

    /**
     * 执行利率(日利率)
     * 表字段:intrate
     */
    private BigDecimal intrate;

    /**
     * 罚息浮动选项
     * 表字段:pfltintrate_opt
     */
    private String pfltintrateOpt;

    /**
     * 罚息浮动率
     * 表字段:pfltintrate
     */
    private BigDecimal pfltintrate;

    /**
     * 罚息利率
     * 表字段:pintrate
     */
    private BigDecimal pintrate;

    /**
     * 单复利标志
     * 表字段:iscomint
     */
    private String iscomint;

    /**
     * 划款方向
     * 表字段:pay_direct
     */
    private String payDirect;

    /**
     * 支付方式
     * 表字段:paymentmode
     */
    private String paymentmode;

    /**
     * 贷款结清类型
     * 表字段:close_type
     */
    private String closeType;

    /**
     * 累计逾期次数
     * 表字段:tot_ovd_times
     */
    private Integer totOvdTimes;

    /**
     * 当前逾期期数
     * 表字段:ovd_peri
     */
    private Integer ovdPeri;

    /**
     * 最高逾期期数
     * 表字段:max_ovd_peri
     */
    private Integer maxOvdPeri;

    /**
     * 展期次数
     * 表字段:ext_cnt
     */
    private Integer extCnt;

    /**
     * 延期次数
     * 表字段:defer_cnt
     */
    private Integer deferCnt;

    /**
     * 缩期次数
     * 表字段:shorten_cnt
     */
    private Integer shortenCnt;

    /**
     * 宽限方式
     * 表字段:dog_type
     */
    private String dogType;

    /**
     * 宽限期天数，当按日方式时记录宽限天数
     * 表字段:dog
     */
    private Integer dog;

    /**
     * 宽限期是否计息标志
     * 表字段:isdogflag
     */
    private String isdogflag;

    /**
     * 贷款投向
     * 表字段:industry_type
     */
    private String industryType;

    /**
     * 贷款用途
     * 表字段:loan_use
     */
    private String loanUse;

    /**
     * 发放方式
     * 表字段:grant_mode
     */
    private String grantMode;

    /**
     * 币种
     * 表字段:currency
     */
    private String currency;

    /**
     * 合同金额
     * 表字段:loan_amount
     */
    private BigDecimal loanAmount;

    /**
     * 本行出资金额
     * 表字段:loan_amount_onus
     */
    private BigDecimal loanAmountOnus;

    /**
     * 折扣
     * 表字段:discount_rate
     */
    private BigDecimal discountRate;

    /**
     * 联合贷标识(0=否 1=是)
     * 表字段:joint_loan_flag
     */
    private String jointLoanFlag;

    /**
     * 资金源id
     * 表字段:fund_id
     */
    private String fundId;

    /**
     * 资金源出资金额
     * 表字段:loan_amount_fund
     */
    private BigDecimal loanAmountFund;

    /**
     * 资金源出资比例
     * 表字段:fund_percentage
     */
    private BigDecimal fundPercentage;

    /**
     * 余额
     * 表字段:curr_balance
     */
    private BigDecimal currBalance;

    /**
     * 本金余额 所有已抛未还本金
     * 表字段:principal_balance
     */
    private BigDecimal principalBalance;

    /**
     * 利息余额 所有已抛未还利息
     * 表字段:interest_balance
     */
    private BigDecimal interestBalance;

    /**
     * 罚息余额 所有已抛未还罚息
     * 表字段:penalty_balance
     */
    private BigDecimal penaltyBalance;

    /**
     * 复利余额 所有已抛未还复利
     * 表字段:compound_balance
     */
    private BigDecimal compoundBalance;

    /**
     * 服务费余额 	所有已抛未还费用
     * 表字段:fee_balance
     */
    private BigDecimal feeBalance;

    /**
     * 剩余本金 	所有未还本金（包含未抛部分）
     * 表字段:remain_principal
     */
    private BigDecimal remainPrincipal;

    /**
     * 计提利息
     * 表字段:accrued_interest
     */
    private BigDecimal accruedInterest;

    /**
     * 计提罚息
     * 表字段:accrued_penalty
     */
    private BigDecimal accruedPenalty;

    /**
     * 计提复利
     * 表字段:accrued_compound
     */
    private BigDecimal accruedCompound;

    /**
     * 	核销标志(0-否 1-已核销)
     * 表字段:chargeoff_flag
     */
    private String chargeoffFlag;

    /**
     * 核销金额
     * 表字段:chargeoff_amount
     */
    private BigDecimal chargeoffAmount;

    /**
     * 核销日期
     * 表字段:chargeoff_date
     */
    private Date chargeoffDate;

    /**
     * 源表创建时间
     * 表字段:input_date
     */
    private Date inputDate;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getLoanId() {
        return loanId;
    }

    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }

    public String getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
    }

    public String getChannel() {
        return channel;
    }

    public void setChannel(String channel) {
        this.channel = channel;
    }

    public String getContractId() {
        return contractId;
    }

    public void setContractId(String contractId) {
        this.contractId = contractId;
    }

    public String getContractNumber() {
        return contractNumber;
    }

    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public String getLoanType() {
        return loanType;
    }

    public void setLoanType(String loanType) {
        this.loanType = loanType;
    }

    public String getOccurPlace() {
        return occurPlace;
    }

    public void setOccurPlace(String occurPlace) {
        this.occurPlace = occurPlace;
    }

    public String getLoanDurationUnit() {
        return loanDurationUnit;
    }

    public void setLoanDurationUnit(String loanDurationUnit) {
        this.loanDurationUnit = loanDurationUnit;
    }

    public BigDecimal getShareContractAmount() {
        return shareContractAmount;
    }

    public void setShareContractAmount(BigDecimal shareContractAmount) {
        this.shareContractAmount = shareContractAmount;
    }

    public Integer getTotalTenor() {
        return totalTenor;
    }

    public void setTotalTenor(Integer totalTenor) {
        this.totalTenor = totalTenor;
    }

    public Integer getPayedTenor() {
        return payedTenor;
    }

    public void setPayedTenor(Integer payedTenor) {
        this.payedTenor = payedTenor;
    }

    public Date getApplyDate() {
        return applyDate;
    }

    public void setApplyDate(Date applyDate) {
        this.applyDate = applyDate;
    }

    public Date getReleaseDate() {
        return releaseDate;
    }

    public void setReleaseDate(Date releaseDate) {
        this.releaseDate = releaseDate;
    }

    public Date getOverdueDate() {
        return overdueDate;
    }

    public void setOverdueDate(Date overdueDate) {
        this.overdueDate = overdueDate;
    }

    public Date getLastPaymentDate() {
        return lastPaymentDate;
    }

    public void setLastPaymentDate(Date lastPaymentDate) {
        this.lastPaymentDate = lastPaymentDate;
    }

    public Date getPayoffDate() {
        return payoffDate;
    }

    public void setPayoffDate(Date payoffDate) {
        this.payoffDate = payoffDate;
    }

    public String getAssureType() {
        return assureType;
    }

    public void setAssureType(String assureType) {
        this.assureType = assureType;
    }

    public String getLoanClassify() {
        return loanClassify;
    }

    public void setLoanClassify(String loanClassify) {
        this.loanClassify = loanClassify;
    }

    public String getNature() {
        return nature;
    }

    public void setNature(String nature) {
        this.nature = nature;
    }

    public String getAccountStatus() {
        return accountStatus;
    }

    public void setAccountStatus(String accountStatus) {
        this.accountStatus = accountStatus;
    }

    public Integer getOvdDays() {
        return ovdDays;
    }

    public void setOvdDays(Integer ovdDays) {
        this.ovdDays = ovdDays;
    }

    public String getAppstat() {
        return appstat;
    }

    public void setAppstat(String appstat) {
        this.appstat = appstat;
    }

    public String getAmortMethod() {
        return amortMethod;
    }

    public void setAmortMethod(String amortMethod) {
        this.amortMethod = amortMethod;
    }

    public String getRtnCardno() {
        return rtnCardno;
    }

    public void setRtnCardno(String rtnCardno) {
        this.rtnCardno = rtnCardno;
    }

    public String getPayMode() {
        return payMode;
    }

    public void setPayMode(String payMode) {
        this.payMode = payMode;
    }

    public String getPayCardno() {
        return payCardno;
    }

    public void setPayCardno(String payCardno) {
        this.payCardno = payCardno;
    }

    public String getRtnDateType() {
        return rtnDateType;
    }

    public void setRtnDateType(String rtnDateType) {
        this.rtnDateType = rtnDateType;
    }

    public BigDecimal getIntrate() {
        return intrate;
    }

    public void setIntrate(BigDecimal intrate) {
        this.intrate = intrate;
    }

    public String getPfltintrateOpt() {
        return pfltintrateOpt;
    }

    public void setPfltintrateOpt(String pfltintrateOpt) {
        this.pfltintrateOpt = pfltintrateOpt;
    }

    public BigDecimal getPfltintrate() {
        return pfltintrate;
    }

    public void setPfltintrate(BigDecimal pfltintrate) {
        this.pfltintrate = pfltintrate;
    }

    public BigDecimal getPintrate() {
        return pintrate;
    }

    public void setPintrate(BigDecimal pintrate) {
        this.pintrate = pintrate;
    }

    public String getIscomint() {
        return iscomint;
    }

    public void setIscomint(String iscomint) {
        this.iscomint = iscomint;
    }

    public String getPayDirect() {
        return payDirect;
    }

    public void setPayDirect(String payDirect) {
        this.payDirect = payDirect;
    }

    public String getPaymentmode() {
        return paymentmode;
    }

    public void setPaymentmode(String paymentmode) {
        this.paymentmode = paymentmode;
    }

    public String getCloseType() {
        return closeType;
    }

    public void setCloseType(String closeType) {
        this.closeType = closeType;
    }

    public Integer getTotOvdTimes() {
        return totOvdTimes;
    }

    public void setTotOvdTimes(Integer totOvdTimes) {
        this.totOvdTimes = totOvdTimes;
    }

    public Integer getOvdPeri() {
        return ovdPeri;
    }

    public void setOvdPeri(Integer ovdPeri) {
        this.ovdPeri = ovdPeri;
    }

    public Integer getMaxOvdPeri() {
        return maxOvdPeri;
    }

    public void setMaxOvdPeri(Integer maxOvdPeri) {
        this.maxOvdPeri = maxOvdPeri;
    }

    public Integer getExtCnt() {
        return extCnt;
    }

    public void setExtCnt(Integer extCnt) {
        this.extCnt = extCnt;
    }

    public Integer getDeferCnt() {
        return deferCnt;
    }

    public void setDeferCnt(Integer deferCnt) {
        this.deferCnt = deferCnt;
    }

    public Integer getShortenCnt() {
        return shortenCnt;
    }

    public void setShortenCnt(Integer shortenCnt) {
        this.shortenCnt = shortenCnt;
    }

    public String getDogType() {
        return dogType;
    }

    public void setDogType(String dogType) {
        this.dogType = dogType;
    }

    public Integer getDog() {
        return dog;
    }

    public void setDog(Integer dog) {
        this.dog = dog;
    }

    public String getIsdogflag() {
        return isdogflag;
    }

    public void setIsdogflag(String isdogflag) {
        this.isdogflag = isdogflag;
    }

    public String getIndustryType() {
        return industryType;
    }

    public void setIndustryType(String industryType) {
        this.industryType = industryType;
    }

    public String getLoanUse() {
        return loanUse;
    }

    public void setLoanUse(String loanUse) {
        this.loanUse = loanUse;
    }

    public String getGrantMode() {
        return grantMode;
    }

    public void setGrantMode(String grantMode) {
        this.grantMode = grantMode;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public BigDecimal getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(BigDecimal loanAmount) {
        this.loanAmount = loanAmount;
    }

    public BigDecimal getLoanAmountOnus() {
        return loanAmountOnus;
    }

    public void setLoanAmountOnus(BigDecimal loanAmountOnus) {
        this.loanAmountOnus = loanAmountOnus;
    }

    public BigDecimal getDiscountRate() {
        return discountRate;
    }

    public void setDiscountRate(BigDecimal discountRate) {
        this.discountRate = discountRate;
    }

    public String getJointLoanFlag() {
        return jointLoanFlag;
    }

    public void setJointLoanFlag(String jointLoanFlag) {
        this.jointLoanFlag = jointLoanFlag;
    }

    public String getFundId() {
        return fundId;
    }

    public void setFundId(String fundId) {
        this.fundId = fundId;
    }

    public BigDecimal getLoanAmountFund() {
        return loanAmountFund;
    }

    public void setLoanAmountFund(BigDecimal loanAmountFund) {
        this.loanAmountFund = loanAmountFund;
    }

    public BigDecimal getFundPercentage() {
        return fundPercentage;
    }

    public void setFundPercentage(BigDecimal fundPercentage) {
        this.fundPercentage = fundPercentage;
    }

    public BigDecimal getCurrBalance() {
        return currBalance;
    }

    public void setCurrBalance(BigDecimal currBalance) {
        this.currBalance = currBalance;
    }

    public BigDecimal getPrincipalBalance() {
        return principalBalance;
    }

    public void setPrincipalBalance(BigDecimal principalBalance) {
        this.principalBalance = principalBalance;
    }

    public BigDecimal getInterestBalance() {
        return interestBalance;
    }

    public void setInterestBalance(BigDecimal interestBalance) {
        this.interestBalance = interestBalance;
    }

    public BigDecimal getPenaltyBalance() {
        return penaltyBalance;
    }

    public void setPenaltyBalance(BigDecimal penaltyBalance) {
        this.penaltyBalance = penaltyBalance;
    }

    public BigDecimal getCompoundBalance() {
        return compoundBalance;
    }

    public void setCompoundBalance(BigDecimal compoundBalance) {
        this.compoundBalance = compoundBalance;
    }

    public BigDecimal getFeeBalance() {
        return feeBalance;
    }

    public void setFeeBalance(BigDecimal feeBalance) {
        this.feeBalance = feeBalance;
    }

    public BigDecimal getRemainPrincipal() {
        return remainPrincipal;
    }

    public void setRemainPrincipal(BigDecimal remainPrincipal) {
        this.remainPrincipal = remainPrincipal;
    }

    public BigDecimal getAccruedInterest() {
        return accruedInterest;
    }

    public void setAccruedInterest(BigDecimal accruedInterest) {
        this.accruedInterest = accruedInterest;
    }

    public BigDecimal getAccruedPenalty() {
        return accruedPenalty;
    }

    public void setAccruedPenalty(BigDecimal accruedPenalty) {
        this.accruedPenalty = accruedPenalty;
    }

    public BigDecimal getAccruedCompound() {
        return accruedCompound;
    }

    public void setAccruedCompound(BigDecimal accruedCompound) {
        this.accruedCompound = accruedCompound;
    }

    public String getChargeoffFlag() {
        return chargeoffFlag;
    }

    public void setChargeoffFlag(String chargeoffFlag) {
        this.chargeoffFlag = chargeoffFlag;
    }

    public BigDecimal getChargeoffAmount() {
        return chargeoffAmount;
    }

    public void setChargeoffAmount(BigDecimal chargeoffAmount) {
        this.chargeoffAmount = chargeoffAmount;
    }

    public Date getChargeoffDate() {
        return chargeoffDate;
    }

    public void setChargeoffDate(Date chargeoffDate) {
        this.chargeoffDate = chargeoffDate;
    }

    public Date getInputDate() {
        return inputDate;
    }

    public void setInputDate(Date inputDate) {
        this.inputDate = inputDate;
    }

    @Override
    public String toString() {
        return "MrLoanAccountInfoRes{" + "id=" + id + ", tenantId='" + tenantId + '\'' + ", loanId='" + loanId + '\'' + ", customerId='" + customerId + '\'' + ", organizationId='" + organizationId + '\'' + ", channel='" + channel + '\'' + ", contractId='" + contractId + '\'' + ", contractNumber='" + contractNumber + '\'' + ", businessType='" + businessType + '\'' + ", loanType='" + loanType + '\'' + ", occurPlace='" + occurPlace + '\'' + ", loanDurationUnit='" + loanDurationUnit + '\'' + ", shareContractAmount=" + shareContractAmount + ", totalTenor=" + totalTenor + ", payedTenor=" + payedTenor + ", applyDate=" + applyDate + ", releaseDate=" + releaseDate + ", overdueDate=" + overdueDate + ", lastPaymentDate=" + lastPaymentDate + ", payoffDate=" + payoffDate + ", assureType='" + assureType + '\'' + ", loanClassify='" + loanClassify + '\'' + ", nature='" + nature + '\'' + ", accountStatus='" + accountStatus + '\'' + ", ovdDays=" + ovdDays + ", appstat='" + appstat + '\'' + ", amortMethod='" + amortMethod + '\'' + ", rtnCardno='" + rtnCardno + '\'' + ", payMode='" + payMode + '\'' + ", payCardno='" + payCardno + '\'' + ", rtnDateType='" + rtnDateType + '\'' + ", intrate=" + intrate + ", pfltintrateOpt='" + pfltintrateOpt + '\'' + ", pfltintrate=" + pfltintrate + ", pintrate=" + pintrate + ", iscomint='" + iscomint + '\'' + ", payDirect='" + payDirect + '\'' + ", paymentmode='" + paymentmode + '\'' + ", closeType='" + closeType + '\'' + ", totOvdTimes=" + totOvdTimes + ", ovdPeri=" + ovdPeri + ", maxOvdPeri=" + maxOvdPeri + ", extCnt=" + extCnt + ", deferCnt=" + deferCnt + ", shortenCnt=" + shortenCnt + ", dogType='" + dogType + '\'' + ", dog=" + dog + ", isdogflag='" + isdogflag + '\'' + ", industryType='" + industryType + '\'' + ", loanUse='" + loanUse + '\'' + ", grantMode='" + grantMode + '\'' + ", currency='" + currency + '\'' + ", loanAmount=" + loanAmount + ", loanAmountOnus=" + loanAmountOnus + ", discountRate=" + discountRate + ", jointLoanFlag='" + jointLoanFlag + '\'' + ", fundId='" + fundId + '\'' + ", loanAmountFund=" + loanAmountFund + ", fundPercentage=" + fundPercentage + ", currBalance=" + currBalance + ", principalBalance=" + principalBalance + ", interestBalance=" + interestBalance + ", penaltyBalance=" + penaltyBalance + ", compoundBalance=" + compoundBalance + ", feeBalance=" + feeBalance + ", remainPrincipal=" + remainPrincipal + ", accruedInterest=" + accruedInterest + ", accruedPenalty=" + accruedPenalty + ", accruedCompound=" + accruedCompound + ", chargeoffFlag='" + chargeoffFlag + '\'' + ", chargeoffAmount=" + chargeoffAmount + ", chargeoffDate=" + chargeoffDate + ", inputDate=" + inputDate + '}';
    }
}